<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes">
  
  
  <title>  Git基本知识 |   写夜子的个人博客 </title>

 
  
    <link rel="icon" href="/images/favicon.png">
  


  <link rel="stylesheet" href="/nayo.min.css"> 
</head>  
  <body>   
    
      <header class="header">
	
  <nav class="header-nav">        
   
    <span class="iconfont icon-menu mobile-toggle"></span>   	

    <div class="header-menu">          
              
            
              <a class="header-menu-link" id="header-menu-home" href="/">首页</a>     
            
            
            
              <a class="header-menu-link" id="header-menu-archives" href="/archives">归档</a>     
            
            
            
              <a class="header-menu-link" id="header-menu-tags" href="/tags">标签</a>     
            
            
            
              <a class="header-menu-link" id="header-menu-about" href="/about">关于</a>     
            
            
            
              <a class="iconfont icon-menu-search header-menu-link" id="header-menu-search"></a>
            
                
    </div>  
    
  </nav>
</header>   

      <div class="container">       
          
          
            <section class="main">  
          

          <article class="post">
  
	<div class="post-header">

	<p class="post-title">	
		git基本知识
	</p>
			

	<div class="meta-info">	
	<span>
		3月 14, 2019
	</span>

	
	
		<i class="iconfont icon-words"></i>
		<span>
			1738
		</span>
	
</div>

</div> 
	 

	  <div class="post-content slideDownMin">

		

			
					<h2 id="Git是什么？"><a href="#Git是什么？" class="headerlink" title="Git是什么？"></a>Git是什么？</h2><p>  Git 是一个开源的分布式版本控制系统.</p>
<h2 id="什么是版本控制？"><a href="#什么是版本控制？" class="headerlink" title="什么是版本控制？"></a>什么是版本控制？</h2><p>  版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.</p>
<h3 id="集中化的版本控制系统和分布式版本控制系统"><a href="#集中化的版本控制系统和分布式版本控制系统" class="headerlink" title="集中化的版本控制系统和分布式版本控制系统"></a>集中化的版本控制系统和分布式版本控制系统</h3><p> 集中化的版本控制系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新.也就是说,  <a id="more"></a>是多对一,如下图：</p>
<p>  <img src="https://i.loli.net/2019/03/14/5c8a2964c00a2.png" alt="未命名文件.png"></p>
<p> 这样做最显而易见的缺点就是服务器很容易发生单点故障而导致的全线奔溃.比如某一天服务器突然宕机,那么在宕机的这段时间内,所有的协同工作者均无法提交更新,无法实现协同工作,一旦服务器的磁盘受损,恰巧没有对文件进行备份,那就会发生数据丢失的惨剧.这个项目就相当于完全归零（<del>删库跑路</del>）🙃️<br> 分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像备份下来.这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复.因为每一次的提取操作,实际上都是一次对代码仓库的完整备份,如下图：</p>
<p> <img src="https://i.loli.net/2019/03/14/5c8a2b75051e1.png" alt="未命名文件 (1).png"></p>
<h3 id="为什么使用Git？"><a href="#为什么使用Git？" class="headerlink" title="为什么使用Git？"></a>为什么使用Git？</h3><p>Git 是分布式的.这是 Git 和其它非分布式的版本控制系统,例如 svn,cvs 等,最核心的区别.分布式带来以下好处：</p>
<ol>
<li>更加安全,每个人的电脑上都是一个完整的版本库,独立负责自己的工作部分却又整体在推进项目的进行.只需把各自的修改推送给对方,就可以互相看到对方的修改了.</li>
<li>集中式版本控制系统,一旦中央服务器出了问题,所有人都无法工作.</li>
<li>分布式版本控制系统,每个人电脑中都有完整的版本库,所以某人的机器挂了,并不影响其它人.</li>
</ol>
<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><h3 id="Windows-环境安装"><a href="#Windows-环境安装" class="headerlink" title="Windows 环境安装"></a>Windows 环境安装</h3><p>在Git 官方下载地址下载 exe 安装包.按照安装向导安装即可.</p>
<p>建议安装 Git Bash 这个 git 的命令行工具.</p>
<h3 id="Mac-环境安装"><a href="#Mac-环境安装" class="headerlink" title="Mac 环境安装"></a>Mac 环境安装</h3><p>在Git 官方下载地址下载 mac 安装包.按照安装向导安装即可.</p>
<h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><p> Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量.</p>
<h3 id="用户信息"><a href="#用户信息" class="headerlink" title="用户信息"></a>用户信息</h3><p> 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改：<br> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ git config --global user.name &quot;xieyezi&quot;</span><br><span class="line">$ git config --global user.email xieyezi@example.com</span><br></pre></td></tr></table></figure></p>
<p> 在你每一次提交你代码更新信息时,会携带你的用户信息</p>
<h3 id="gitignore"><a href="#gitignore" class="headerlink" title=".gitignore"></a>.gitignore</h3><p> 这个文件里配置的文件或目录,会自动被 git 所忽略,不纳入版本控制.项目在进行开发时,经常会产生一些临时文件或者依赖文件,例如<code>npm node_modules</code>等,这些没有必要放入git服务器进行托管,就会被<code>.gitignore</code>纳入.</p>
<h3 id="git基本原理简介"><a href="#git基本原理简介" class="headerlink" title="git基本原理简介"></a>git基本原理简介</h3><h4 id="版本库"><a href="#版本库" class="headerlink" title="版本库"></a>版本库</h4><p>   当你一个项目到本地或创建一个 git 项目,项目目录下会有一个隐藏的 .git 子目录.这个目录是 git 用来跟踪管理版本库的,千万不要手动修改.</p>
<h4 id="文件状态"><a href="#文件状态" class="headerlink" title="文件状态"></a>文件状态</h4><p>   在 git 中,你的文件可能会处于三种状态之一：</p>
<ul>
<li>已修改（modified） - 已修改表示修改了文件,但还没保存到数据库中.</li>
<li>已暂存（staged） - 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中.</li>
<li>已提交（committed） - 已提交表示数据已经安全的保存在本地数据库中.    </li>
</ul>
<h4 id="工作区域"><a href="#工作区域" class="headerlink" title="工作区域"></a>工作区域</h4><p>   与文件状态对应的,不同状态的文件在 Git 中处于不同的工作区域.</p>
<ul>
<li>工作区（working） - 当你 git clone 一个项目到本地,相当于在本地克隆了项目的一个副本.工作区是对项目的某个版本独立提取出来的内容. 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改.</li>
<li>暂存区（staging） - 暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中. 有时候也被称作‘索引’,不过一般说法还是叫暂存区.</li>
<li>本地仓库（local） - 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库.</li>
<li>远程仓库（remote） - 以上几个工作区都是在本地.为了让别人可以看到你的修改,你需要将你的更新推送到远程仓库.同理,如果你想同步别人的修改,你需要从远程仓库拉取更新.</li>
</ul>
  	
					
	  </div>     
	  

	
<div class="post-meta">
      	

      
        <i class="iconfont icon-tag"></i>     
          <a class="tag-link" href="/tags/GitHub/">GitHub</a> <a class="tag-link" href="/tags/git/">git</a>    
      	
</div>





<div class="post-footer">
  <div class="pf-left">
      <img class="pf-avatar" src="http://wx2.sinaimg.cn/mw690/89296167gy1fu5ph67x17j21kw1kwhdu.jpg">
      <p class="pf-des">hi,我是写夜子,希望你有愉快的一天.</p>
  </div>

  <div class="pf-right">           
      <div class="pf-links">
        




<span class="donate-btn">
	<span class="iconfont icon-donate"></span>
</span>


<div id="donate-box" class="sildeUpMin">

	<span class="donate-cancel iconfont icon-cancel"></span>

	<div class="donate-img-box">
		<img id="donate-qr-wechat" class="noLazyLoad donate-img" src="/images/donate1.png" alt="No Donate Image!">	
		<img id="donate-qr-alipay" class="noLazyLoad donate-img" src="/images/donate2.png" alt="No Donate Image!">	
	</div>

	<span class="donate-word">世界美好 你也是</span>

	<div class="donate-list">
		<span class="iconfont icon-donate-wechat"></span>
		<span class="iconfont icon-donate-alipay"></span>
	</div>

</div>

 
        
	
<script id="-mob-share" src="http://f1.webshare.mob.com/code/mob-share.js?appkey=21d601593a1de"></script>
	
	<span class="share-btn">
	<span class="iconfont icon-share"></span>
	</span>


	<div class="-mob-share sildeUpMin">
		   			             
            <a class="iconfont  icon-share-qq -mob-share-qq"></a>		
     	   			             
            <a class="iconfont  icon-share-weixin -mob-share-weixin"></a>		
     	   			             
            <a class="iconfont  icon-share-weibo -mob-share-weibo"></a>		
     	   			             
            <a class="iconfont  icon-share-douban -mob-share-douban"></a>		
     	   			             
            <a class="iconfont  icon-share-facebook -mob-share-facebook"></a>		
     	   			             
            <a class="iconfont  icon-share-twitter -mob-share-twitter"></a>		
     	   			             
            <a class="iconfont  icon-share-google -mob-share-google"></a>		
     	   
	</div>	

      </div>  
    <nav class="pf-paginator">
      
         
          <a href="/2019/03/26/将本地项目同步至github/" data-hover="将本地项目同步至github">上一篇</a>      
            
        
      
        
        <a href="/2019/03/03/解决移动端300ms延迟点击的问题/" data-hover="解决移动端300ms延迟的问题"> 下一篇</a>
            
  </nav>   
  </div>
</div> 
	
	
</article>

          </section> 
      </div>            
    
    <a id="backTop">
      <span>
        <i class="iconfont icon-backtotop"></i>
      </span>
    </a> 

  
    
    <div class="search-container sildeUpMin">
        <div class="search-header">
            <input type="text" placeholder="输入你想搜索的" id="search-input" class="search-input">  
            <span class="search-cancel iconfont icon-cancel"></span>
        </div>
        <div id="search-result" class="search-result"></div>
    </div>
 
     <div class="mobile-menu">      

      
      <img class="mobile-menu-icon lazyload" src="/images/placeholder.png" data-src="/images/favicon.png">   
      

         
            

            <a class="mobile-menu-link" href="/">首页
            </a>
            
         
            

            <a class="mobile-menu-link" href="/archives">归档
            </a>
            
         
            

            <a class="mobile-menu-link" href="/tags">标签
            </a>
            
         
            

            <a class="mobile-menu-link" href="/about">关于
            </a>
            
         
                          

            <a class="mobile-menu-link mobile-menu-search" href="#">搜索 </a>                 
            
         
      
</div>        
    


<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?636802045446222199ae541e32c8133e"; 
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>





     
    




<footer id="footer">


		<div class="footer-copyright">
		&copy;
		
		2018-
		
		2020

		Xieyezi
		<br>

		Copyright
		<a href="https://github.com/xieyezi" target="_blank">Xieyezi</a>
		</div>

</footer>
   

  

    <script src="/nayo.bundle.js"></script>           
  </body>        
</html>